/*****************************************************
 * 予算項目画面の描画を行うクラス
 * @extends AbstractResultsView
 * @author kino
 *****************************************************/
/**
 * コンストラクタ
 * @param {BudgetResults} data このビューが表示するデータ。非null。
 */
function BudgetResultsView(session, query, data){
    /** プロパティの継承 */
    AbstractResultsView.call(this, session, query, data);
}

/** メソッドの継承 */
ClassUtility.inherit(BudgetResultsView, AbstractResultsView);

/**
 * 保持している一覧データから、一覧のテーブル表現を構築する。
 * @return {String} 一覧のHTMLテーブル表現。<table>～</table>。
 */
BudgetResultsView.prototype.createTable = function(){
    // 合計の算出
    var sumBudget = 0;
    for (var i = 0; i < this.data.length; i++) {
        sumBudget += this.data[i].budget;
    }
    
    // テーブルの構築
    var html = '';
    html += '<table class="result-table">';
    html += '<tr><th>予算項目</th><th>金額</th></tr>';
    for (var i = 0; i < this.data.length; i++) {
        html += '<tr>';
        html += '<td>' + this.data[i].budgetName + '</td>';
        html += '<td>' + this.data[i].budget + '</td>';
        html += '<tr>';
    }
    html += '<tr>';
    html += '<td>合計</td>';
    html += '<td>' + sumBudget + '</td>';
    html += '</tr>';
    html += '</table>';
    return html;
}

/**
 * 表示するデータタイプにあった、新規データ入力欄を構築する。
 * @return {String} 入力フォームのHTML文字列。
 */
BudgetResultsView.prototype.createInputForm = function(){
    var result = '';
    result += '<input type="text" size="50" id="budget-name"/>';
    result += '<input type="text" size="20" id="budget"/>';
    result += '<input type="button" id="add-item-button" value="入力"/>';
    return result;
}

/**
 * 結果一覧エリアに対する各種イベントを設定する。
 */
BudgetResultsView.prototype.setResultTableEvent = function(){
    // 特になし
}

/**
 * 新規データ入力フォームに対する各種イベントを設定する。
 */
BudgetResultsView.prototype.setInputFormEvent = function(){
	var self = this;
    $('#add-item-button').click(function(){
		var data = {};
	    data.type = ItemType.BUDGET;
        data.budgetName = $('#budget-name').val();
        data.budget = $('#budget').val();
        // TODO 入力が足りなかったらエラーメッセージ表示して終了
		InputLogic.add(self, data);
    });
}

/**
 * 保持しているセッション情報・クエリ情報から、サーバに投げるPOSTクエリを構築する
 * @return {Map} POSTクエリデータ。
 */
BudgetResultsView.prototype.createQuery = function(){
    var post = {};
    post.action = RequestType.SEARCH;
    post.type = ItemType.BUDGET;
    post.sessionId = this.session.sessionId;
    post.year = this.query.year;
    post.month = this.query.month;
    return post;
}
